[CMake] Explicitly disable LTO if no LTO option is provided #85621
+2
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When compiling Swift as an LLVM external project (not the non-unified workflow from the build-script), if one tries to enable LTO for LLVM projects it will end up affecting Swift and the Swift standard library, even if the options
SWIFT_TOOLS_ENABLE_LTOandSWIFT_STDLIB_ENABLE_LTOare disabled or using their default values, because HandleLLVMOptions modifies theCMAKE_C/CXX_FLAGSglobally.By setting
-fno-ltoexplicitly when those options are disabled or using their default values, the options fromCMAKE_C/CXX_FLAGSare overriden, and theSWIFT_*_ENABLE_LTOcontrols the usage or not of LTO optimizations and the presence of bitcode in the object files.